Problema computacional

En ciencia computacional teórica, un problema computacional o problema abstracto es una relación entre un conjunto de instancias y un conjunto de soluciones. Un problema abstracto permite establecer formalmente la relación deseada entre cada instancia del problema y su correspondiente solución. Una solución algorítmica a un problema abstracto consiste de un algoritmo que por cada instancia del problema calcula al menos una solución correspondiente –en caso de haberla– o expide un certificado de que no existe solución alguna. Un problema abstracto se convierte en un problema concreto cuando las instancias y soluciones están codificadas en forma de lenguajes formales.

Los problemas abstractos suelen definirse en dos partes: en la primera se describe al conjunto de instancias y en la segunda se describe la solución esperada para cada instancia. Por ejemplo, el problema de ordenación de números enteros se suele definir como sigue:

Instancia: Una sucesión finita de números enteros
Solución: Una permutación de la sucesión de entrada tal que

Aquí tanto el conjunto de instancias y el de soluciones es el mismo, pues se trata del conjunto de todas las sucesiones finitas de números enteros. La relación que hay entre ellos asigna a cada sucesión la única permutación tal que . Por ejemplo, tiene como solución a . Una solución algorítmica al problema de ordenamiento es el ordenamiento de burbuja porque este algoritmo produce una solución como salida cada vez que se le suministra una instancia como entrada.


© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search